arduinoのコードはメールにある


一回だけ鳴るやつ


import serial
import pygame
import time

# pygame初期化
pygame.mixer.init()

# 音声ファイル(絶対パスにする)
pygame.mixer.music.load("C:/Users/kai23/mygit/xbp/project1/tengokutojigoku.mp3")  # パスは自分のものに書き換えてください

# Arduinoと接続するCOMポート(適宜変更)
ser = serial.Serial("COM5", 9600, timeout=1)  # COM番号は環境により異なる

# 状態管理(何度も再生しないように)
playing = False

print("Arduinoからの値を監視しています...")

while True:
    try:
        line = ser.readline().decode("utf-8").strip()
        if line.isdigit():
            light_value = int(line)
            print("センサー値:", light_value)

            if light_value >= 400 and not playing:
                print("▶ 明るさが200以上!音を再生します。")
                pygame.mixer.music.play()
                playing = True

            # 再生が終わったら playing をリセット
            if not pygame.mixer.music.get_busy() and playing:
                playing = False

        time.sleep(0.1)

    except Exception as e:
        print("エラー:", e)

ループするやつ


import serial
import pygame
import time

pygame.mixer.init()
pygame.mixer.music.load("C:/Users/kai23/mygit/xbp/project1/tengokutojigoku.mp3")

#HC-06が割り当てられているCOMポートに変更
ser = serial.Serial("COM5", 9600, timeout=1)
playing = False
print("Arduinoからの値を監視しています...")

while True:
    try:
        line = ser.readline().decode("utf-8").strip()
        if line.isdigit():
            light_value = int(line)
            print("センサー値:", light_value)

            if light_value >= 400:
                if not playing:
                    print("▶ 明るさが200以上。ループ再生開始")
                    pygame.mixer.music.play(-1)
                    playing = True
            else:
                if playing:
                    print("▶ 明るさが200未満。再生停止")
                    pygame.mixer.music.stop()
                    playing = False

        time.sleep(0.1)

    except Exception as e:
        print("エラー:", e)